#include <stdio.h>
#include <vector>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <iostream>

int main()
{
    printf("程序的起始代码\n");
    execl("/usr/bin/ls","ls--color=auto","-l",NULL);

    
    
    
    printf("程序的结束代码\n");

    return 0;
}
//typedef void (*handler_t)();
//std::vector<handler_t> handlers;
//
//void fun_1()
//{
//    printf("这是任务一\n");
//}
//
//void fun_2()
//{
//    printf("这是任务二\n");
//}
//
//void Load()
//{
//    handlers.push_back(fun_1);
//    handlers.push_back(fun_2);
//}
//int main()
//{
//    pid_t id = fork();
//    if(id == 0)
//    {
//        int cnt=5;
//        while(cnt)
//        {
//            printf("我是子进程：cnt:%d  pid:%d  ppid%d\n",cnt--,getpid(),getppid());
//            sleep(1);
//        }
//
//    }
//
//    else 
//    {
//        printf("我是父进程：pid:%d  ppid:%d\n",getpid(),getppid());
//        
//        int status = 0;
//        pid_t ret=waitpid(id,&status,WNOHANG);
//        
//        int quit=0;
//        while(!quit)
//        {
//            ret=waitpid(id,&status,WNOHANG);
//            if(ret>0)
//            {
//                //等待成功，子进程退出
//                if(WIFEXITED(status))
//                {
//                     printf("父进程等待子进程退出成功：退出码：%d\n",WEXITSTATUS(status));
//                }
//                quit=1;
//            }
//
//            else if(ret==0)
//            {
//                  printf("子进程暂时还没有退出，父进程可以处理其他任务\n");
//                if(handlers.empty()){
//                    Load();
//                }
//                int i=0;
//                for(i=0;i<handlers.size();i++)
//                {
//                   handlers[i](); 
//                }
//            }
//
//            else 
//            {
//                printf("wait fail\n");
//                quit=1;
//            }
//            sleep(1);
//        }
//    }
//
//    return 0;
//}
